Configuration sequence for programmable logic device

ABSTRACT

Techniques are provided to permit a programmable logic device (PLD) to comply with a communication standard before the PLD is fully configured. In one example, a method includes programming a first portion of a programmable logic device (PLD) with first configuration data. After the first portion is programmed, the first portion is operated in accordance with a communication standard to exchange data with a host system while a second portion of the PLD is programmed with second configuration data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional PatentApplication No. 61/714,636 filed Oct. 16, 2012 which is herebyincorporated by reference in its entirety.

TECHNICAL FIELD

The present disclosure relates generally to programmable logic devicesand, more particularly, to configuration operations for such devices.

BACKGROUND

Various host systems may be implemented with one or more programmablelogic devices (PLDs) (e.g., field programmable gate arrays (FPGAs),complex programmable logic devices (CPLDs), field programmable systemson a chip (FPSCs), or other types of programmable devices). PLDs aretypically programmed with configuration data each time they are booted(e.g., when a host system is turned on or otherwise reset). Thisprogramming takes time as configuration data is loaded into the PLD andwritten into various memories therein to configure the PLD foroperation.

In some cases, the programming time may exceed the maximum allowableboot time permitted under a particular operational standard (e.g., aprotocol and/or other operational requirements). In particular, thePeripheral Computer Interface Express (PCIe) standard may require PCIecompatible devices to respond to configuration requests within 100 ms ofbeing reset, which many conventional PLDs cannot meet.

Conventional techniques to reduce PLD programming time include, forexample, using parallel flash memories to provide configuration data tothe PLD more rapidly. However, such implementations are often costprohibitive. Accordingly, there is a need for a PLD and relatedprogramming techniques that can satisfy the boot time constraints of oneor more operational standards.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of a programmable logic device (PLD)in accordance with an embodiment of the disclosure.

FIG. 2 illustrates a PLD implemented as part of a host system inaccordance with an embodiment of the disclosure.

FIG. 3 illustrates a clock network in accordance with an embodiment ofthe disclosure.

FIG. 4 illustrates a process of programming a PLD in accordance with anembodiment of the disclosure.

Embodiments of the present disclosure and their advantages are bestunderstood by referring to the detailed description that follows. Itshould be appreciated that like reference numerals are used to identifylike elements illustrated in one or more of the figures.

DETAILED DESCRIPTION

In accordance with several embodiments set forth herein, varioustechniques are provided to permit at least a portion of a programmablelogic device (PLD) to be programmed with configuration data while beingsynchronized to a first clock signal. After the programmed portion lockson to a second clock signal, the programmed portion switches itssynchronization from the first clock signal to the second clock signal.The programmed portion of the PLD becomes operational and available toexchange data with a host system in accordance with a communicationstandard before a remainder of the PLD is programmed with theconfiguration data. The remainder of the PLD is programmed withconfiguration data while the programmed portion of the PLD issynchronized to the second clock signal.

As a result, the programmed portion of the PLD is operational tocommunicate with other devices quickly after the PLD is powered on orreset. Advantageously, such an operational state may be achieved even ifthe remainder of the PLD has not yet been configured.

Such implementations permit the PLD to be used in applications requiringrapid boot times (e.g., as a PCIe controller or other device). In thisregard, the PLD may offer boot times comparable to that typicallyassociated with hardwired circuitry, but with far more configurabilityand customization options (e.g., in contrast to conventional hardwiredcircuitry that cannot be easily repurposed to support different featuresin diverse applications).

The various techniques disclosed herein are applicable to a wide varietyof integrated circuits and applications. In various exampleimplementations, a PLD will be utilized to illustrate the techniques inaccordance with one or more embodiments of the disclosure. However, itshould be understood that this is not limiting and that the techniquesdisclosed herein may be implemented as desired, in accordance with oneor more embodiments of the disclosure, within various types of circuits.

Referring now to the figures, FIG. 1 illustrates a block diagram of aPLD 100 in accordance with an embodiment of the disclosure. In oneembodiment, PLD 100 may be implemented as a PLD in the SC/M family ofdevices available from Lattice Semiconductor Corporation of Hillsboro,Oreg.

PLD 100 (e.g., a field programmable gate array (FPGA)), a complexprogrammable logic device (CPLD), a field programmable system on a chip(FPSC), or other type of programmable device) generally includesinput/output (I/O) blocks 102 and logic blocks 104 (e.g., also referredto as programmable logic blocks (PLBs), programmable functional units(PFUs), or programmable logic cells (PLCs)).

I/O blocks 102 provide I/O functionality (e.g., to support one or moreI/O and/or memory interface standards) for PLD 100, while programmablelogic blocks 104 provide logic functionality (e.g., LUT-based logic orlogic gate array-based logic) for PLD 100. Additional I/O functionalitymay be provided by serializer/deserializer (SERDES) blocks 150 andphysical coding sublayer (PCS) blocks 152. PLD 100 also includes hardintellectual property core (IP) blocks 160 to provide additionalfunctionality (e.g., substantially predetermined functionality providedin hardware which may be configured with less programming than logicblocks 104).

PLD 100 may also include blocks of memory 106 (e.g., blocks of EEPROM,block SRAM, and/or flash memory), clock-related circuitry 108 (e.g., PLLand/or DLL circuits), configuration logic 230 (e.g., see FIG. 2, usedfor startup, decryption, encryption, multiple-boot support (e.g., dualboot support), and/or error detection), a configuration port 231 (e.g.,see FIG. 2 and/or provided by I/O blocks 102), a configuration memorysubsystem 222 (e.g., see FIG. 2 which may be implemented with a controlplane clock generator 223, memory 224, and/or appropriate logic, any ofwhich may be provided within PLD 100 and/or external to PLD 100), and/orvarious routing resources as appropriate. In general, the variouselements of PLD 100 may be used to perform their intended functions fordesired applications, as would be understood by one skilled in the art.

For example, I/O blocks 102 and/or configuration port 231 may be usedfor programming PLD 100, such as memory 106 and/or configuration memorysubsystem 222 or transferring information (e.g., various types of dataand/or control signals) to/from PLD 100 as would be understood by oneskilled in the art. I/O blocks 102 and/or configuration port 231 mayprovide a first programming port (which may represent a centralprocessing unit (CPU) port, a peripheral data port, an SPI interface,and/or a sysCONFIG programming port) and/or a second programming portsuch as a joint test action group (JTAG) port (e.g., by employingstandards such as Institute of Electrical and Electronics Engineers(IEEE) 1149.1 or 1532 standards). I/O blocks 102 and/or configurationport 231 typically, for example, may be included to receiveconfiguration data and commands to support serial or parallel deviceconfiguration and information transfer with SERDES blocks 150, PCSblocks 152, hard IP blocks 160, and/or logic blocks 104 as appropriate.

It should be understood that the number and placement of the variouselements are not limiting and may depend upon the desired application.For example, various elements may not be required for a desiredapplication or design specification (e.g., for the type of programmabledevice selected). Furthermore, it should be understood that the elementsare illustrated in block form for clarity and that various elementswould typically be distributed throughout PLD 100, such as in andbetween logic blocks 104 and hard IP blocks 160, to perform theirconventional functions (e.g., storing configuration data that configuresPLD 100 or providing interconnect structure within PLD 100). It shouldalso be understood that the various embodiments disclosed herein are notlimited to programmable logic devices, such as PLD 100, and may beapplied to various other types of programmable devices, as would beunderstood by one skilled in the art.

FIG. 2 illustrates PLD 100 implemented as part of a host system 200 inaccordance with an embodiment of the disclosure. For example, in someembodiments, host system 200 may be a computer system. In this regard,PLD 100 may be implemented on a subsystem 220 of a computer systemincluding a motherboard 202 (e.g., supporting a PCIe subsystem or otherappropriate subsystems) with one or more processors 204, memories 206,BIOS 208, a reference clock generator 209, and/or other components 210.For example, subsystem 220 may be implemented as a peripheral card(e.g., a PCIe card) installed in a computer system as shown in FIG. 2.As another example, subsystem 220 may be implemented as part ofmotherboard 202 (e.g., as a PCIe subsystem) or elsewhere as desired forparticular applications.

In the embodiment shown in FIG. 2, PLD 100 is used as a controller tosupport communications between subsystem 220 and motherboard 202 overone or more communication buses 225 in accordance with one or morecommunication standards (e.g., providing a PCIe link in accordance witha PCIe standard or other link in accordance with another standard). PLD100 may be implemented in other types of host systems such as, forexample, embedded systems, portable electronic devices, networkeddevices, and/or other systems or devices as may be desired for variousapplications.

PLD 100 includes SERDES/PCS blocks 150/152 used to supportserialization, deserialization, and low level communications with one ormore communication buses 225. PLD 100 also includes a hard IP block 160which may be implemented with appropriate circuitry that, after it isconfigured (e.g., programmed), is available to exchange data with hostsystem 200 (e.g., through SERDES/PCS blocks 150/152 over a data path 262such as a PCIe data path). For example, when implemented as a PCIe hardIP block, hard IP block 160 may respond to configuration requestsreceived over one or more communication buses 225. Thus, when hard IPblock 160 is operational, PLD 100 may be detected as a PCIe controllerby host system 200 in accordance with a PCIe standard (e.g., within 100ms of a reset of host system 200), even if another portion of PLD 100(e.g., logic blocks 104) is not yet configured.

As shown, logic blocks 104 may be configured to provide one or more PCIesoft IP cores and application logic. For example, logic blocks 104 maybe used to support PCIe controller operations of hard IP block 160subsequent to the detection of hard IP block 160 by host system 200.

As shown, configuration memory subsystem 222 may be provided, forexample, on peripheral card 220. In other embodiments, configurationmemory subsystem 222 may be provided as part of PLD 100. Configurationmemory subsystem 222 may be implemented with memory 224 (e.g., one ormore flash memories or other types of memory in various embodiments)used to store configuration data to program PLD 100 for operation.Configuration memory subsystem 222 may include control plane clockgenerator 223 (e.g., also referred to as a programming clock generator)used to provide a control plane clock signal used to synchronize theprogramming of various portions of PLD 100.

In some embodiments, the control plane clock signal may be providedseparately from the configuration data. In other embodiments, theconfiguration data may be provided as a data stream (e.g., a bitstream)with the control plane clock signal embedded therein.

PLD 100 also includes configuration logic 230 which receives theconfiguration data and control plane clock signal from configurationmemory subsystem 222, and provides the same to SERDES/PCS blocks 150/152and logic blocks 104. A reference clock generator 240 may be provided,for example, as part of subsystem 220 separate from PLD 100 (as shown inFIG. 2) or as part of PLD 100.

When PLD 100 is implemented as a PCIe controller, communication buses225 may be implemented as one or more PCIe lanes (e.g., PCIe x1, x4, x8,x16, and/or other PCIe lane implementations), and one or more componentsof motherboard 202 (e.g., processor 204 and/or I/O circuitry 208) may beimplemented as a root complex which communicates with PLD 100 inaccordance with a PCIe standard. In such embodiments, PLD 100 may berequired to be available to respond to configuration requests within 100ms of a reset of host system 200 (e.g., when the root complex is reset).As further described herein, various components of PLD 100 may beprogrammed and synchronized to support such requirements before PLD 100is entirely programmed.

SERDES/PCS blocks 150/152 are programmed by the configuration data in aprogramming operation that is synchronized by the control plane clocksignal. After being programmed, SERDES/PCS blocks 150/152 passconfiguration data and the control plane clock signal (received fromconfiguration logic 230) to hard IP block 160 in order to program (e.g.,configure) hard IP block 160. In addition, SERDES/PCS blocks 150/152 andhard IP block 160 are synchronized by the control plane clock signalwhile a phase-locked loop (PLL) 242 attempts to lock on to a referenceclock signal (e.g., received from reference clock generator 209 over oneor more of communication buses 225 or from reference clock generator240). After PLL 242 locks on to the reference clock signal, it providesan operating clock signal (e.g., also referred to as a PCIe functionalclock signal in PCIe implementations) to hard IP block 160. As shown,hard IP block 160 includes clock switching circuitry 250 to switch fromsynchronizing by the control plane clock signal to synchronizing by theoperating clock signal.

When operational, hard IP block 160 selectively disables a data path 260(e.g., also referred to as a PCIe data path in PCIe implementations)between hard IP block 160 and logic blocks 104 while logic blocks 104are programmed, and selectively enables data path 260 when logic blocks104 are operational.

FIG. 3 illustrates a clock network 300 of a portion of PLD 100 inaccordance with an embodiment of the disclosure. For example, clocknetwork 300 may be implemented in hard IP block 160. As shown, clocknetwork 300 receives the control plane clock signal and one or moreoperating clock signals (e.g., two functional PCIe clock signals PCLK_c0and PCLK_c2 are provided in the illustrated embodiment). Clock switchingcircuitry 250 (e.g., logic) operates to selectively pass the controlplane clock signal or an operating clock signal (e.g., when provided byPLL 242) as one or more clock signals pclk_int, core_clk, and mem_rclkto synchronize hard IP block 160.

FIG. 4 illustrates a process of programming PLD 100 in accordance withan embodiment of the disclosure. Host system 200 is initially powered onor otherwise reset (operation 400). This causes peripheral card 220 andPLD 100 to also power on/reset.

In response to the power on/reset, configuration logic 230 beginsprogramming PLD 100 with configuration data (e.g., at least a firstsubset of the configuration data) received from configuration memorysubsystem 222 (operation 405). For example, as shown in FIG. 2,configuration logic 230 programs SERDES/PCS blocks 150/152 using thecontrol plane clock signal and configuration data (operation 410).

After SERDES/PCS blocks 150/152 are programmed with their correspondingconfiguration data (operation 415), they begin operating in accordancewith their newly programmed configuration and continue to besynchronized by the control plane clock signal received fromconfiguration logic 230. In this regard, PLL 242 attempts to lock on toa reference clock signal provided by reference clock generator 209 or240 (operation 420). In various embodiments, the reference clock signalmay be provided as a separate clock signal or embedded in a data stream(e.g., in a data stream received over one or more communication buses225).

While PLL 242 is in the process of locking, SERDES/PCS blocks 150/152(e.g., collectively referred to as a PCS-PCIe interface) pass thecontrol plane clock signal and configuration data (e.g., at least asecond subset of the configuration data) received from configurationlogic 230 to hard IP block 160 which is programmed with theconfiguration data to enable PCIe features of hard IP block 160 (e.g.,to permit such features to be accessed for use in a PCIe controller)(operation 425). For example, such configuration data may identify themanner in which hard IP block 160 is to operate (e.g., as an endpointdevice, bridge, root complex, and/or other manner).

After hard IP block 160 is programmed with the configuration data(operation 430), it disables an interface with logic blocks 104 (e.g.,data path 260) in preparation for the programming of logic blocks 104with configuration data (operation 435). Such disabling may beperformed, for example, by operation of appropriate circuitry of hard IPblock 160 and/or the passing of appropriate data (e.g., data values,commands, flags, and/or other information) between hard IP block 160,logic blocks 104, SERDES/PCS blocks 150/152, and/or configuration logic230. The disabling of data path 260 may prevent inadvertent and/orunpredictable data transfers between hard IP block 160 and logic blocks104 while logic blocks 104 are being configured.

In operation 440, PLL 242 locks on to the reference clock signal andbegins providing an operating clock signal (e.g., a PCIe functionalclock signal) in response thereto. As a result, SERDES/PCS blocks150/152 are synchronized by the PCIe functional clock signal (operation445) and PLL 242 provides the PCIe functional clock signal to hard IPblock 160 (operation 450).

In operation 455, clock switching circuitry 250 switches from providingthe control plane clock signal to providing the PCIe functional clocksignal to other portions of hard IP block 160. This causes hard IP block160 to switch from synchronizing by the control plane clock signal tosynchronizing by the PCIe functional clock signal. As a result,SERDES/PCS blocks 150/152 and hard IP block 160 are all synchronized bythe PCIe functional clock signal and operate independently of thecontrol plane clock signal.

In operation 460, SERDES/PCS blocks 150/152 and hard IP block 160 areready to exchange data with host system 200 before logic blocks 104 havebeen fully programmed with corresponding configuration data. In thisregard, hard IP block 160 may be implemented with appropriate circuitrythat is sufficient to exchange data with host system 200 after it isconfigured (e.g., finished programming in operation 430) andsynchronized to the PCIe functional clock signal (e.g., in operation455).

As discussed, in some implementations, PLD 100 may be implemented as aPCIe controller. In such cases, hard IP block 160 may be implemented asa PCIe IP core used to respond to configuration requests received fromone or more components of motherboard 202. Because SERDES/PCS blocks150/152 and hard IP block 160 are rapidly configured before logic blocks104 are fully programmed, PLD 100 will be available to respond toconfiguration requests shortly after a reset/power on of host system 200(e.g., operation 460 may occur within 100 ms of operation 400). As aresult, PLD 100 may appear to host system 200 as an available PCIecontroller or other appropriate PCIe device in compliance with a PCIestandard, thus permitting host system 200 to operate withoutinterruption even while logic blocks 104 are programmed.

In operation 465, configuration logic 230 begins programming logicblocks 104 with configuration data. Such programming is synchronized bythe control plane clock signal. In some embodiments, the programming oflogic blocks 104 may take substantially longer than the relatively fast(e.g., within 100 ms) programming of SERDES/PCS blocks 150/152 and hardIP block 160. Meanwhile, also during operation 465, SERDES/PCS blocks150/152 and hard IP block 160 remain synchronized by the PCIe functionalclock signal and operate to exchange data with host system 200 asdiscussed.

After logic blocks 104 are programmed (operation 470), hard IP block 160enables the interface with logic blocks 104 (e.g., data path 260)(operation 475), and logic blocks 104 are synchronized by the PCIefunctional clock (operation 480) (e.g., received over data path 260).Thereafter, SERDES/PCS blocks 150/152, hard IP block 160, and logicblocks 104 may operate to provide PCIe controller services to hostsystem 200 and peripheral card 220 while synchronized by PCIe functionalclock (operation 485).

Additional embodiments are also contemplated. For example, although IPblock 160 has been described as a configurable hard IP block, otherconfigurations may be used where appropriate. For example, in someembodiments, one or more IP blocks 160 may be implemented asnon-configurable hard IP blocks and/or configurable soft IP blocks. Inthe case of non-configurable hard IP blocks, logic functionality may behardwired with an entirely predetermined configuration. In such case,operations 425 and 430 of FIG. 4 may be skipped. In the case of soft IPblocks, more extensive programming may be performed in operation 425 ofFIG. 4.

Embodiments described above illustrate but do not limit the invention.It should also be understood that numerous modifications and variationsare possible in accordance with the principles of the present invention.Accordingly, the scope of the invention is defined only by the followingclaims which are incorporated into this section by reference.

We claim:
 1. A method comprising: programming a first portion of aprogrammable logic device (PLD) with first configuration data, whereinthe first portion comprises a physical coding sublayer (PCS) block andan intellectual property core (IP) block, wherein the programming thefirst portion comprises: configuring the PCS block with at least a firstsubset of the first configuration data; and passing at least a secondsubset of the first configuration data from the PCS block to the IPblock; and after the first portion is programmed, operating the IP blockin accordance with a communication standard to exchange data with a hostsystem while programming a second portion of the PLD with secondconfiguration data.
 2. The method of claim 1, further comprising:synchronizing the programming of the first portion by a first clocksignal; and synchronizing the operating of the IP block by a secondclock signal while synchronizing the programming of the second portionby the first clock signal.
 3. The method of claim 2, wherein the PLD isimplemented in a subsystem of the host system, the method furthercomprising: generating the first clock signal at the subsystem; andreceiving the second clock signal at the subsystem from the host system.4. The method of claim 1, wherein: the host system is a computer system;the PLD is implemented in a peripheral component interconnect express(PCIe) subsystem of the computer system; the communication standard is aPCIe standard; and the first portion is programmed in less than 100 msto comply with the PCIe standard.
 5. The method of claim 4, wherein thePCIe subsystem is a peripheral card installed in a motherboard of thecomputer system.
 6. The method of claim 1, further comprising disablinga data path between the first and second portions while the secondportion is programmed.
 7. The method of claim 1, wherein the IP block isa configurable hard IP block.
 8. The method of claim 1, wherein the IPblock is a non-configurable hard IP block, wherein the non-configurablehard IP block is not programmed with the first configuration data.
 9. Adevice comprising: a first portion of a programmable logic device (PLD)adapted to be programmed with first configuration data, wherein thefirst portion comprises: an intellectual property core (IP) block; and aphysical coding sublayer (PCS) block adapted to be programmed by atleast a first subset of the first configuration data and pass at least asecond subset of the first configuration data from the PCS block to theIP block; a second portion of the PLD adapted to be programmed withsecond configuration data; and wherein the IP block is adapted tooperate in accordance with a communication standard to exchange datawith a host system after the first portion is programmed and while thesecond portion is programmed.
 10. The device of claim 9, wherein: thefirst portion is adapted to synchronize to a first clock signal whilethe first portion is programmed and to a second clock signal while thesecond portion is programmed; and the second portion is adapted tosynchronize to the first clock signal while the second portion isprogrammed.
 11. The device of claim 10, further comprising a subsystemof the host system, the subsystem comprising: the PLD; a clock generatoradapted to generate the first clock signal; and wherein the second clocksignal is received at the subsystem from the host system.
 12. The deviceof claim 9, wherein: the host system is a computer system; the PLD ispart of a peripheral component interconnect express (PCIe) subsystemadapted to be implemented in the computer system; the communicationstandard is a PCIe standard; and the first portion is adapted to beprogrammed in less than 100 ms to comply with the PCIe standard.
 13. Thedevice of claim 12, wherein the PCIe subsystem is a peripheral cardadapted to be installed in a motherboard of the computer system.
 14. Thedevice of claim 9, wherein the first portion is adapted to disable adata path between the first and second portions while the second portionis programmed.
 15. The device of claim 9, wherein the IP block is aconfigurable hard IP block.
 16. The device of claim 9, wherein: the IPblock is a non-configurable hard IP block; and the non-configurable hardIP block is not programmed with the first configuration data.